import os

def print_tree(directory, indent=""):
    """
    遍历指定的目录并输出目录树。
    :param directory: 要遍历的目录路径
    :param indent: 当前递归层级的缩进
    """
    # 获取目录中的所有文件和子目录
    try:
        items = os.listdir(directory)
    except PermissionError:
        print(f"{indent}权限不足，无法访问目录: {directory}")
        return
    except FileNotFoundError:
        print(f"{indent}目录未找到: {directory}")
        return

    # 遍历每个项目
    for index, item in enumerate(items):
        item_path = os.path.join(directory, item)
        # 判断是否为目录
        if os.path.isdir(item_path):
            # 打印目录名称并递归遍历该目录
            print(f"{indent}|-- {item}/")
            print_max_tree(item_path, indent + "    ")
        else:
            # 打印文件名称
            print(f"{indent}|-- {item}")


def print_max_tree(directory, level=0, max_level=3, indent=""):
    """
    遍历指定的目录并输出目录树，最多遍历到三级目录。
    :param directory: 要遍历的目录路径
    :param level: 当前递归深度
    :param max_level: 最大递归深度（默认为3）
    :param indent: 当前递归层级的缩进
    """
    if level > max_level:
        return  # 超过最大深度时停止递归

    try:
        items = os.listdir(directory)
    except PermissionError:
        print(f"{indent}权限不足，无法访问目录: {directory}")
        return
    except FileNotFoundError:
        print(f"{indent}目录未找到: {directory}")
        return

    # 遍历目录中的每个项目
    for index, item in enumerate(items):
        item_path = os.path.join(directory, item)
        # 判断是否为目录
        if os.path.isdir(item_path):
            # 打印目录名称并递归遍历该目录
            print(f"{indent}|-- {item}/")
            # 递归遍历子目录，但只遍历到 max_level 层
            print_max_tree(item_path, level + 1, max_level, indent + "    ")
        else:
            # 打印文件名称
            print(f"{indent}|-- {item}")

if __name__ == "__main__":
    # directory = input("请输入要遍历的目录路径: ")
    # directory = "./"
    directory = r"D:\Git\tdesign-health"
    if os.path.isdir(directory):
        print(f"目录树结构：\n{directory}")
        # print_tree(directory)
        print_max_tree(directory)
    else:
        print("输入的路径不是有效的目录！")
